$(function () {
    getCustomerTree();
    initData();
    treeSearch("ss", "treeContent"); // 绑定树搜索功能
})

//加载机构树信息
function getCustomerTree() {
    //加载机构树，当前登录人所在的机构信息
    $.messager.progress({text: '正在加载中...',});
    $.ajax({
            type: "post",
            url: reportworld + "/customer/queryCustomerTree",
            dataType: "json",
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $('#treeContent').tree({
                    cascadeCheck: false,
                    checkbox: false,
                    lines: false,
                    data: data.data,
                    onClick: function (node) {
                    },  //双击事件
                    onDblClick: function (node) {
                        viewCustomer();
                    }, onContextMenu: function (e, node) {
                        //显示上下文菜单:就是显示右键菜单
                        e.preventDefault();
                        $(this).tree('select', node.target);
                        $('#nav').menu('show', {
                            left: e.pageX,
                            top: e.pageY
                        });
                        $('#nav').menu({
                            onClick: function (item) { // 根据选择的id判断选中的是添加，修改，还是删除
                                if ("2" == item.id) {
                                    addCustomer();
                                }
                                if ("3" == item.id) {
                                    editCustomer();
                                }
                                if ("4" == item.id) {
                                    delCustomer();
                                }
                                if ("5" == item.id) {
                                    getTableInfo();
                                }
                                if ("6" == item.id) {
                                    getCustomerManger();
                                }
                            }
                        })
                    },
                    formatter: function (node) {
                        //显示父节点含有子节点个数
                        var s = node.text;
                        if (node.children) {
                            s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
                        }
                        return s;
                    }
                })
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: reportworld + "/customer/init",
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var listCustomer = data.data.listCustomer;
                var listModular = data.data.listModular;
                var listReport = data.data.listReport;
                var listVersion = data.data.listVersion;
                if (!isNull(listCustomer)) {
                    //在数组第一个追加
                    listCustomer.unshift({"text": "==无上级==", "id": '0', "pId": "", "iconCls": "icon-bricks"});
                    $("#parentId").combotree("loadData", listCustomer);
                }
                if (!isNull(listModular)) {
                    $('#strModular').combotree({data: listModular});
                }
                if (!isNull(listReport)) {
                    $('#strReport').combotree({data: listReport});
                }
                if (!isNull(listVersion)) {  //版本号
                    listVersion.unshift({"showmsg": "==全部==", "value": ''});
                    $("#selVersion").combobox("loadData", listVersion);
                    $("#selColumnVersion").combobox("loadData", listVersion);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

/**
 * 查看机构信息弹出框
 */
function viewCustomer() {
    $('#myform').form('disableValidation');//清除验证样式
    $('#dlg').dialog({
        title: "查看机构信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    getCustomerInfo();
}


/**
 * 添加机构信息弹出框
 */
function addCustomer() {
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    $('#dlg').dialog({
        title: "新增机构信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemCustomer(1);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    var node = $("#treeContent").tree('getSelected');
    $('#parentId').combotree('setValue', node.id);
}

/**
 * 修改机构信息
 */
function editCustomer() {
    $('#myform').form('enableValidation');//设置验证样式
    $('#dlg').dialog({
        title: "编辑机构信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemCustomer(2);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    getCustomerInfo();
}

// 删除机构信息
function delCustomer() {
    var node = $("#treeContent").tree('getSelected');
    $.messager.confirm('系统提示', '确定要删除【' + node.text + '】机构以及下级所有机构信息吗，关联关系也会被删除？', function (param) {
        if (!param) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: reportworld + "/customer/del",
                dataType: "json",
                data: {
                    id: node.id
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    getCustomerTree();//刷新树
                    initData();
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );

    });
}

/**
 * 点击树节点加载对应机构信息
 * @param orgId
 */
function getCustomerInfo() {
    var node = $("#treeContent").tree('getSelected');
    $.messager.progress({text: '正在加载中...',});
    $.ajax({
            type: "post",
            url: reportworld + "/customer/queryReportCustomerInfo",
            dataType: "json",
            data: {
                id: node.id
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $('#myform').form('load', data.data);//页面赋值
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

//保存机构信息
function saveItemCustomer(ftype) {
    //验证表单信息
    if (!$("#myform").form('validate')) { //验证表单信息
        return;
    }
    var url = reportworld + "/customer/edit";
    if (1 == ftype) {
        url = reportworld + "/customer/add";
    }
    $.messager.confirm('系统提示', "确定保存机构信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        $('#myform').form('submit', {
            url: url,
            onSubmit: function () {
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                    getCustomerTree();//刷新树
                    initData();
                    $.messager.show({title: '系统提示', msg: data.message});
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}


//搜索的方法
function doSearchTableInfo() {
    var queryParams = $("#dgTableInfo").datagrid("options").queryParams;
    queryParams["tableName"] = $("#tableName").val();
    queryParams["chineseName"] = $("#chineseName ").val();
    queryParams["version"] = $("#selVersion ").val();
    $("#dgTableInfo").datagrid("options").queryParams = queryParams;
    $("#dgTableInfo").datagrid("load");
}

/**
 * 查看客户对应的表信息
 */
var customerId;

function getTableInfo() {
    $('#dlgTableInfo').dialog({
        title: "查看对应表信息"
    }).dialog('open');
    $("#tabfrom1").form('clear');//添加之前清空表达信息
    var node = $("#treeContent").tree('getSelected');
    customerId = node.id;
    $('#dgTableInfo').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: reportworld + '/customer/getTableInfo',
        singleSelect: false,//如果为true，则只允许选择一行。
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        queryParams: {
            customerId: node.id
        },
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'id', title: '编号', hidden: true},
            {field: 'tableId', title: '表主键', hidden: true},
            {field: 'customerId', title: '客户主键', hidden: true},
            {field: 'tableName', title: '表名'},
            {field: 'chineseName', title: '中文名称'},
            {field: 'layered', title: '报表世界所在分层'},
            {field: 'version', title: '版本号'},
            {field: 'ftype', title: '表类型'},
            {field: 'fsource', title: '表来源'}
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            viewTableInfo(rowData)
        }
    }).datagrid("columnMoving");
}


//搜索的方法
function doSearchDetail() {
    var queryParams = $("#dgTableDetail").datagrid("options").queryParams;
    queryParams["columnName"] = $("#selColumnName").val();
    queryParams["columnChineseName"] = $("#selColumnChineseName").val();
    queryParams["columnDescribe"] = $("#selColumnDescribe").val();
    queryParams["version"] = $("#selColumnVersion ").val();
    queryParams["customerId"] = customerId;
    $("#dgTableDetail").datagrid("options").queryParams = queryParams;
    $("#dgTableDetail").datagrid("load");
}


function viewTableInfo(rowData) {
    $('#dlgTableDetail').dialog({
        title: "查看表详细信息"
    }).dialog('open');
    queryTableDetail(rowData.tableId);
    $("#tabfrom2").form('clear');//添加之前清空表达信息
}

/**
 * 查询表详细信息
 */

function queryTableDetail(id) {
    $('#dgTableDetail').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: reportworld + '/table/queryTableDetailListByTableId',
        // pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        // title: "科目辅助项信息列表",
        // pageSize: pageSize,
        //pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        queryParams: {
            tableId: id
        },
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'id', title: '编号', hidden: true},
            {field: 'tableId', title: '关联表的主键', hidden: true},
            {field: 'columnName', title: '字段名称'},
            {field: 'columnChineseName', title: '中文名称'},
            {field: 'columnDescribe', title: '字段描述'},
            {field: 'strColumnType', title: '字段类型'},
            {field: 'columnLength', title: '字段长度'},
            {field: 'columnDecimal', title: '小数位数'},
            {
                field: 'columnNull', title: '是否可为空', formatter: function (value, row, index) {
                    if (1 == value) {
                        return "是";
                    } else {
                        return "否";
                    }
                }
            },
            {field: 'columnDefault', title: '默认值'},
            {
                field: 'primaryKey', title: '是否主键', formatter: function (value, row, index) {
                    if (1 == value) {
                        return "是";
                    } else {
                        return "否";
                    }
                }
            },
            {field: 'foreignTable', title: '外键对应表名'},
            {field: 'foreignTableColumn', title: '外键对应表字段'},
            {
                field: 'indexed', title: '是否索引', formatter: function (value, row, index) {
                    if (1 == value) {
                        return "是";
                    } else {
                        return "否";
                    }
                }
            },
            {
                field: 'codeName', title: '字典编码',
                formatter: function (value, row, index) {
                    if (!isNull(row.codeName)) {
                        return "<a href='javascript:void(0)' onclick='compareValue(&apos;" + row['codeName'] + "&apos;)'>" + row.codeName + "</a>";
                    }
                }
            },
            {field: 'deleteReason', title: '修改说明', width: 100},
            {field: 'strStatus', title: '状态'},
            {field: 'version', title: '版本号'}
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        onClickCell: function (index, field, value) {
            $(this).datagrid('beginEdit', index);
            $(this).datagrid('getEditor', {index: index, field: field});
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {

        }
    }).datagrid("columnMoving");
}

//字典值点击
function compareValue(obj) {
    $('#dlgDataSql').dialog({
        title: "查看字典信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlgDataSql').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#dgDataSql').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: reportworld + '/dataSql/queryReportDataSqls',
        singleSelect: false,//如果为true，则只允许选择一行。
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        queryParams: {
            name: obj
        },
        columns: [[
            {field: 'class_id', title: '分类代码'},
            {field: 'class_name', title: '分类名称'},
            {field: 'class_ename', title: '分类英文名称'},
            {field: 'key_id', title: '键值代码'},
            {field: 'key_name', title: '键值名称'},
            {field: 'key_ename', title: '键值英文名称'},
            {
                field: 'or_valid_d', title: '是否有效', formatter: function (value, row, index) {
                    if (0 == value) {
                        return "有效";
                    } else {
                        return "无效";
                    }
                }
            },
            {field: 'memo', title: '备注说明'},
            {
                field: 'sta', title: '是否启用', formatter: function (value, row, index) {
                    if (0 == value) {
                        return "锁定";
                    } else {
                        return "启用";
                    }
                }
            },
            {field: 'key_seq', title: '顺序号'}
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        }
    }).datagrid("columnMoving");
}


/**
 * 客户选择模块和报表
 */
function getCustomerManger() {
    $("#myformCustomer").form('clear');//添加之前清空表达信息
    $('#myformCustomer').form('enableValidation');//设置验证样式
    $('#dlgCustomerManger').dialog({
        title: "维护客户模块和报表信息",
        buttons: [{
            text: '确定',
            iconCls: 'icon-save',
            handler: function () {
                doCustomerManger();
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlgCustomerManger').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myformCustomer').form('enableValidation');//设置验证样式
    var node = $("#treeContent").tree('getSelected');
    $.ajax({
            type: "post",
            url: reportworld + "/customer/queryReportCustomerInfo",
            dataType: "json",
            async: true,
            data: {
                id: node.id
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                if (!isNull(data.data.strModular) && isNull(data.data.strCustomer)) {
                    $("#strModular").combotree("setValues", data.data.strModular);
                }
                if (!isNull(data.data.strReport)) {
                    $("#strReport").combotree("setValues", data.data.strReport);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

/**
 * 保存客户的模块和报表信息
 */
function doCustomerManger() {
    if (!$("#myformCustomer").form('validate')) { //验证表单信息
        return;
    }
    $.messager.confirm('系统提示', "确定保存客户模块和报表信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        var node = $("#treeContent").tree('getSelected');
        $('#myformCustomer').form('submit', {
            url: reportworld + "/customer/doCustomerManger",
            onSubmit: function (param) {
                //验证表单信息
                param.selModular = getCommbotreeValueDetail("strModular");
                param.selReport = getCommbotreeValueDetail("strReport");
                param.id = node.id;
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlgCustomerManger').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}

/**
 * 客户拥有的模块和报表数据加密生成文件，提供给升级工具使用
 */
function customerBase64() {
    var node = $("#treeContent").tree('getSelected');
    if (isNull(node)) {
        $.messager.alert('系统提示', "请选择要导出许可的客户！", 'info');
    }
    $('#myformCustomer').form('submit', {
        url: reportworld + "/customer/customerBase64",
        onSubmit: function (param) {
            param.id = node.id;
            param.name = node.text;
        }, success: function (data) {
            $.messager.progress('close');
            try {
                data = JSON.parse(data);
                if (successcode != data.code) {
                    return errorHandle(data);
                }
            } catch (e) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    });
}
